/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package toesp.fn;

import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
//import org.jvnet.substance.SubstanceLookAndFeel;

/**
 *
 * @author Ratno Kustiawan
 */
public class TabFunction {

    private JTabbedPane tabPane;
    private int i;
    private static TabFunction tabFunction;

    public static TabFunction init(JTabbedPane tabPane) {
        if (tabFunction == null) {
            tabFunction = new TabFunction(tabPane);
        }
        return tabFunction;
    }

    public static TabFunction getTabFunction() {
        return tabFunction;
    }

    /**
     * Membuat objek dari kelas TabFunction
     * @param tabPane JTabbedPane yang menjadi induk dari panel ini
     */
    private TabFunction(JTabbedPane tabPane) {
        this.tabPane = tabPane;
//        this.tabPane.setcom
    }

    public void setTabPane(JTabbedPane tabPane) {
        this.tabPane = tabPane;
    }

    /**
     * Digunakan untuk menempatkan suatu panel ke JTabbedPane
     * Apabila sudah ada maka akan difokus, jika belum akan ditambahkan
     * @param title judul dari Tab
     * @param panelToShow panel yang hendak dimunculkan
     */
    public void ShowIfExist(String title, JPanel panelToShow) {
        for (i = 0; i < tabPane.getTabCount(); i++) {
            if (tabPane.getTitleAt(i).trim().equals(title.trim())) {
                tabPane.setSelectedIndex(i);
                return;
            }
        }
        
        tabPane.add(title.trim(), panelToShow);
        tabPane.setTabComponentAt(tabPane.getTabCount() - 1, new ButtonTabComponent(tabPane));
        tabPane.setSelectedIndex(tabPane.getTabCount() - 1);
    }

    /**
     * Digunakan untuk menempatkan suatu panel ke JTabbedPane
     * Apabila sudah ada maka akan diremove dan diganti dengan yang baru, jika belum akan ditambahkan
     * @param title judul dari Tab
     * @param panelToShow panel yang hendak dimunculkan
     */
    public void RefreshIfExist(String title, JPanel panelToShow) {
        for (i = 0; i < tabPane.getTabCount(); i++) {
            if (tabPane.getTitleAt(i).trim().equals(title.trim())) {
//                tabPane.setSelectedIndex(i);
                tabPane.remove(tabPane.getComponentAt(i));
                break;
//                return;
            }
        }
        tabPane.add(title.trim(), panelToShow);
        //--tabPane.setTabComponentAt(tabPane.getTabCount() - 1, new ButtonTabComponent(tabPane));
        tabPane.setSelectedIndex(tabPane.getTabCount() - 1);
    }

    /**
     * Digunakan untuk menutup panel dari JTabbedPane
     * @param tabPane JTabbedPane yang menjadi induk
     * @param panel panel yang hendak ditutup
     */
    public static void Close(JTabbedPane tabPane, JPanel panel) {
        tabPane.remove(panel);
    }

    /**
     * Digunakan untuk menutup panel dari JTabbedPane
     * @param panel panel yang hendal ditutup
     */
    public static void Close(JComponent panel) {
        JTabbedPane tabPane = (JTabbedPane) panel.getParent();
        tabPane.remove(panel);
    }
}
